# 编译器设置
CC = arm-linux-gnueabihf-gcc
STRIP = arm-linux-gnueabihf-strip

CFLAGS = -Wall -Wno-incompatible-pointer-types -Wextra -O2 -std=c99 -D_XOPEN_SOURCE=500 -DNDEBUG
LDFLAGS = -pthread
INCLUDES = -I. -I../common -I../iec10X

# 目标可执行文件
TARGET = build/IEC104

# 源文件
SRCS = $(wildcard *.c) $(wildcard ../iec10X/*.c)
# 使用notdir去除路径，所有.o文件都放在build目录
OBJS = $(addprefix build/,$(notdir $(SRCS:.c=.o)))

# 默认目标
all: ensure_build_dir $(TARGET)
	$(STRIP) $(TARGET)

# 创建build目录（如果不存在）
ensure_build_dir:
	@mkdir -p build

# 链接生成可执行文件
$(TARGET): $(OBJS)
	$(CC) -o $@ $^ $(LDFLAGS)

# 编译当前目录的源文件
build/%.o: %.c
	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@

# 编译../iec10X目录的源文件
build/%.o: ../iec10X/%.c
	$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@

# 清理所有生成的文件
clean:
	rm -rf build/

# 安装目标（如果需要）
install: release
	@echo "Installing release version"
	# 这里可以添加安装命令，如 cp $(TARGET_RELEASE) /usr/local/bin/

# 声明伪目标
.PHONY: all clean install ensure_build_dir 